package com.southgis.ibase.sql.enums;

import org.apache.commons.lang3.StringUtils;

/**
 * 标准字段类型
 * @author dennis
 *
 */
public enum ColumnTypeEnum
{
	/**
	 * 文本类型，如果长度为-1，则为clob；否则为varchar，字节长度不能超过4000
	 */
	Text,
	/**
	 * 二进制类型，如果长度为-1，则为blob，否则为varbinary，字节长度不能超过4000
	 */
	Binary,
	/**
	 * 小值类型，一般是开关标志字段。或取值不大于255
	 */
	Byte,
	/**
	 * 常用整数值，一般用4字节存贮
	 */
	Integer,
	/**
	 * 大整数值，一般用8字节存贮
	 */
	Bigint,
	/**
	 * 常用浮点数，一般用8字节存贮
	 */
	Double,
	/**
	 * 定点小数，需要指定保留小数位
	 */
	Decimal,
	/**
	 * 日期类型
	 */
	Datetime,
	/**
	 * Json格式的值，针对文本类型的特殊优化。<br>
	 */
	Json,
//	/**
//	 * 空间字段，针对二进制串的特殊优化。注：当前以序列化的Json串保存<br>
//	 * 由另一参数（比如：ColumnDefine的suftype）指出是哪种类型：
//	 * point（点）,line（两点直线段）,polyline（折线）,<br>
//	 * polygon（多边形），mpolygon（空心多边形，第一部分为外边界，剩下每一块描述的是内部空心边界）,<br>
//	 * rectangle（矩形）,circle（圆）
//	 */
//	Geometry,
	;
	
//	/**
//	 * Geometry子类型：点，保存值是一个点：(x,y,z)，z可省略
//	 */
//	public static final String GEO_TYPE_POINT="point";
//	/**
//	 * Geometry子类型：两点直线段，保存的是两个点：[(x1,y1,z1),(x2,y2,z2)]，z可省略。
//	 * 主要优化折线用。
//	 */
//	public static final String GEO_TYPE_LINE="line";
//	/**
//	 * Geometry子类型：折线，保存的是点数组：[(x1,y1,z1),(x2,y2,z2),...]，z可省略
//	 */
//	public static final String GEO_TYPE_POLYLINE="polyline";
//	/**
//	 * Geometry子类型：多边形，保存的是点数组：[(x1,y1,z1),(x2,y2,z2),...,(x1,y1,z1)]，z可省略
//	 */
//	public static final String GEO_TYPE_POLYGON="polygon";
//	/**
//	 * Geometry子类型：空心多边形。
//	 * 保存的是不同组点数组：{[(x1,y1,z1),(x2,y2,z2),...,(x1,y1,z1)],
//	 * [(xo1,yo1,zo1),(xo2,yo2,zo2),...,(xo1,yo1,zo1)],
//	 * ...}，z可省略。其中第一组为外边界，剩下每一组描述的是内部空心边界
//	 */
//	public static final String GEO_TYPE_MPOLYGON="mpolygon";
//	/**
//	 * Geometry子类型：矩形，保存的是对角点数组：[(x1,y1,z1),(x2,y2,z2)]，z可省略。
//	 * 主要优化多边形用。
//	 */
//	public static final String GEO_TYPE_RECTANGLE="rectangle";
//	/**
//	 * Geometry子类型：圆，保存的是圆心点及圆上两点：[(x1,y1,z1),(x2,y2,z2),(x3,y3,z3)]，z可省略。
//	 * 或圆心半径：{(x1,y1,z1),r}，此时圆总与XY平面平行。
//	 * 特殊场合用。
//	 */
//	public static final String GEO_TYPE_CIRCLE="circle";

	public static ColumnTypeEnum getColumnTypeEnumByString(String type){
		if(StringUtils.isEmpty(type)){
			return null;
		}
		ColumnTypeEnum[] columnTypeEnums = ColumnTypeEnum.values();
		for(ColumnTypeEnum columnTypeEnum:columnTypeEnums){
			if(columnTypeEnum.name().equalsIgnoreCase(type)){
				return columnTypeEnum;
			}
		}
		return null;
	}

}
